#define _CRT_SECURE_NO_WARNINGS 1

//#include<bits/stdc++.h>
//
//using namespace std;
//
//
//int main()
//{
//	long long a, h, b, k;
//	cin >> a >> h >> b >> k;
//
//	long long cnt = 0;
//	while (h > 0 && k > 0)
//	{
//		cnt += a + b;
//		h -= b;
//		k -= a;
//	}
//
//	if (h <= 0 && k > 0)
//		cnt += b * 10;
//	else if (k <= 0 && h > 0)
//		cnt += a * 10;
//
//	cout << cnt << endl;
//
//	return 0;
//}

//#include<bits/stdc++.h>
//
//using namespace std;
//
//int main()
//{
//	long long a, h, b, k;
//	long long cnt = 0;
//	cin >> a >> h >> b >> k;
//
//	long long n = min(h / b, k / a);
//	cnt += n * (a + b);
//
//	h -= n * b;
//	k -= a * n;
//
//	if (h > 0 && k > 0)
//	{
//		cnt += a + b;
//		h -= b;
//		k -= a;
//	}
//
//	if (h <= 0 && k > 0)
//		cnt += b * 10;
//	else if (k <= 0 && h > 0)
//		cnt += a * 10;
//
//	cout << cnt << endl;
//
//	return 0;
//}



//#include<bits/stdc++.h>
//
//using namespace std;
//
//typedef long long ll;
//
//int main()
//{
//	ll n;
//	cin >> n;
//	ll prev = 0, now = 0, t;
//	ll ret = -0x3f3f3f3f;
//	while (n--)
//	{
//		cin >> t;
//		now = max(prev, ll(0)) + t;
//		prev = now;
//		ret = max(now, ret);
//	}
//
//	cout << ret << endl;
//
//	return 0;
//}

#include<bits/stdc++.h>

using namespace std;

int main()
{
	string s;
	cin >> s;
	int n = s.size();
	if (n == 1)
	{
		cout << 0 << endl;
		return 0;
	}
	int i = 1;
	for (i = 1; i < n; i++)
	{
		if (s[i] != s[i - 1])
			break;
	}
	if (i == n)
	{
		cout << 0 << endl;
		return 0;
	}

	int l = 0, r = n-1;

	while (l < r)
	{
		if (s[l] != s[r])
		{
			cout << n << endl;
			return 0;
		}
		l++;
		r--;
	}
	cout << n-1 << endl;

	return 0;
}